package asoasd1212;

public class J02_Operators {

     //연산자 operator
    // 컴퓨터 프로그램은 특정 기능을 수행할 작업들로 구성됨
	//연산자는 이러한 작업을 표현하는 기호
	//작업에는 더하기,빼기,곱하기,나누기,비트 이동등이 있음
	//연산자는 한/두/세 개의 피 연산자에서 작업을 수행함
	//피연산자 operand는 작업의 대상을 의미
	
	
	public static void main(String[] args) {
	
		//단항연산자:++,--,!
		int val1 =10;
		int val2 =++val1; //val1=val1 + 1;(증가)
		int val3 =--val1; //val1 =val -1;(감소)
	    boolean isMarried =true; 
		
		//결과출력
	    System.out.println(val1);
	    System.out.println(val2);
	    System.out.println(val3);
	    System.out.println(!isMarried); //!는 반대의 의미
	    
	    //산술 연산자 :+,-,*,/,%
	    int op1 = 600;
	    int op2 = 300;
	    int op3 = 123;
	    int op4 = 23;
	    int plus =op1 +op2;
	    int sub =op1 -op2;
	    int mul =op1 *op2;
	    int div1 =op1 /op2;
	   	      //정수를 정수로 나누면 결과역시 정수
	    //int div2 =op1 /(float)op2;
	        //실수를 정수로 나누면 결과는 실수! 수식의 결과 유형과 그것을 저장하는
	       //변수의 유형은 서로일치해야함
	    float div2 =op1 /(float)op2;
        float div3 =op3/(float)op4;
        double div4 =op3/(double)op4;
	    //형변환에 따라 오차가 발생할수도 있음
        //Math 클래스를 이용하면 오차를 줄일수 있음
        int mod =op1 %op2;
	    
		System.out.println(op1+op2);
		System.out.println(op1-op2);
		System.out.println(op1*op2);
		System.out.println(op1/op2);
		System.out.println(op1%op2);
		System.out.println(div2);
		System.out.println(div3);
		System.out.println(div4);
		
		
		//관계/동등 연산자 :>, <, <=, >=,==,!=
		boolean rel1 = 100>150;
		boolean rel2 = 100<150;
		boolean rel3 = 100<=150;
		boolean rel4 = 100>=150;
		boolean rel5 = 100==150;
		boolean rel6 = 100!=150;
		
		System.out.println(rel1);
		System.out.println(rel2);
		System.out.println(rel3);
		System.out.println(rel4);
		System.out.println(rel5);
		System.out.println(rel6);
		
		//조건 연산자 : AND, OR, NOT , &&, || ,?:	
		boolean cond1 =(100>150) && (op1 == op2);
		boolean cond2 =(op1 == op2) && (100>150);
		boolean cond3 =(100>150) || (op1 == op2);
	    char cond4 =(op1 == op2) ? '정' : '오';
	    //삼항 연산자 ? :
	    //형식은 (조건식) ? 참일때 처리 :거짓일때 처리;
	    
	    
		//short-circuit 연산
		//조건 연산 처리시 첫째 항의 연산 결과로 의해 전체 수식의 결과를 바로알 수 있는 경우
		//나머지 항의 수식은 연산하지 않음
		
		System.out.println(cond1);
		System.out.println(cond2);
		System.out.println(cond3);
		System.out.println(cond4);
		
		//대입연산자 : =, +=, -=, *=, /=, %=
		int assg1 = 100;
		int assg2 = 125;
		int assg3 = 150;
		int assg4 = 175;
		int assg5 = 200;

		assg1 += 200;  //assg1 = assg1 + 200;
		
		assg2 -= 200;  //assg2 = assg2 - 200;
		assg3 *= 200;  //assg3 = assg3 * 200;
		assg4 /= 75;  //assg4 = assg4 / 75;
		assg5 %= 75; //assg5 = assg5 % 75;
		
		System.out.println(assg1);
		System.out.println(assg2);
		System.out.println(assg3);
		System.out.println(assg4);
		System.out.println(assg5);
		
		
		
		// TODO Auto-generated method stub

	}

}
